package com.dhnsoft.web.config;

import com.dhnsoft.web.biz.UserBizHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.function.*;

/**
 * @author dhn
 * @version 1.0
 * @date 2023-09-04 10:55
 * @Desc
 */
@Configuration
public class WebFunctionConfig {
    /**
     * 函数式Web:
     * 1、给容器中放一个Bean：类型是RouterFunction<ServerResponse>
     * 2、RequestPredicate：定义请求：请求谓语。请求方式（GET、POST）、请求参数
     * 3、ServerRequest：封装请求完整数据
     * 4、ServerResponse：封装相应完整数据
     * */

    @Bean
    public RouterFunction<ServerResponse> userRoute(UserBizHandler userBizHandler /*这个会被自动注入进来*/){
        return RouterFunctions.route()//开始定义路由信息
                .GET("/user/{id}", RequestPredicates.accept(MediaType.ALL),userBizHandler::getUser)
                .GET("/users",userBizHandler::getUsers)
                .POST("/user",RequestPredicates.accept(MediaType.ALL),userBizHandler::addUser)
                .PUT("/user/{id}",RequestPredicates.accept(MediaType.ALL),userBizHandler::updateUser)
                .DELETE("/user/{id}",userBizHandler::deleteUser)
                .build();

    }
}
